apache 日志切割

        这里的日志指的是访问日志,没访问一次网站,就会记录若干条日志。前提是已经配置了日志,日志如果不去管理,时间长了日志文件会越来越大,这个时候这个日志是不可能 cat、less、 以及 vim 的,head 或 tail 还可以。如何避免产生这么大的日志文件?其实 apache 有相关配置,是日志按照我们的需求进行归档,比如每天一个新日志,或者每小时一个新日志。

1
[root@lamp ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

        在对应的虚拟主机配置文件中加入

1
2
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-error_%Y%m%d_log 86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined

        说明:ErrorLog 是错误日志,CustomLog 是访问日志。最前面的竖线是管道符,意思是把产生的日志交给 rotatelogs 这个工具,而这个工具就是 apache 自带的切割日志的工具。 -l 的作用是校准时区为UTC ,也就是北京时间。最后的86400,单位是秒,正好是一天,那么日志会每天切割一次。最后面的 combined 问日志格式,关于日志格式在

1
[root@lamp ~]# vim /usr/local/apache2/conf/httpd.conf
1
2
3
4
[root@lamp ~]# grep LogFormat /usr/local/apache2/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio